Due to limits of how fast a central processing unit (CPU) can be clocked, and limits of how small and fast circuits and transistors can be made, the industry has turned to process optimization and parallel computing in order to increase the performance of computing platforms. This has introduced the concepts of multi-core and many-core processors.
Multi-Core processors in both homogeneous and heterogeneous models are being developed. A basic problem with multi-core and many-core processors is the issue with operating system scalability. Operating systems today need to keep track of the number of available CPU cores and to schedule processes and threads on each of those cores. This is a time-consuming operation for operating systems as the operating system must swap processes by saving of a state and loading a new state and context into the CPU before the operating system gives the CPU an instruction to execute process.